/***************************************************************
 *
 * Filename：MainWindow.h
 * Abstract：the design of main window
 * version ：1.0
 *
 * Copyright (c) 2011 SCUT DT&P FY&XC
 *
***************************************************************/

#include <QtGui>
#include <QtNetwork>
#include <QDebug>
#include "ipmsg.h"
#include "SubWindow.h"

class MainWindow : public QWidget 
{
	Q_OBJECT
			
	public:
		MainWindow();
		void getHostInformation();
		
		//初始化聊天室
		void initWindow();
		//聊天室窗口
		void initUp();
		void exit();
		void showuserlist();
                void addUserphoto(MessagePRO *msg);

		QWidget *messageWindow;
		//显示聊天记录的文本编辑框
		QTextEdit *recordTextEdit;
		//输入文本编辑框
		QTextEdit *inputTextEdit;
                //头像显示更新按钮
		QToolButton *ImageButton;
                //用户名昵称
		QLabel *HostNameLabel;
                //时间显示？？？
		QLabel *TimeLabel;
		//关于按钮
		QPushButton *aboutButton;
                //刷新按钮
		QPushButton *refurbishButton;
  		//发送按钮
		QPushButton *sendButton;
		//退出按钮
		QPushButton *quitButton;
		//右侧的用户列表，保存其他用户的登录昵称
		int usercount;
                QString userPhoto;
                //保存用户相关信息，扩展用
                QMap <QString,QString> userphoto;
		QListWidget *userListWidget;
		QListWidgetItem *userListWidgetItem;
		QMap <int, QString> sublist;//hostaddress, username:usercount
		QMap <QString, int> subislist;//
		//QMap <QHostAddress , QString> sublist;//hostaddress, username:usercount
		CfgAllDialog cfgall;
		Serve *service;

		//编辑inpuTextEdit的包括字体，颜色等行为的工具栏
		QToolBar *editToolBar;
		QComboBox *fontComboBox;
		QComboBox *sizeComboBox;
		QToolButton *boldButton;
		QToolButton *italicButton;
		QToolButton *underlineButton;
		QToolButton *colorButton;
		QToolButton *imageButton;

		//UDP TCP连接用的socket
		QUdpSocket *udpSocket;
		QTcpSocket *tcpSocket;
		//保存收发的消息
		QString message;
		//保存当前聊天室用户列表的主机名（为扩展：下一版本用TCP实现单对单聊天，这个是连接的关键）
		//QStringList *hostStringList;
		//处理系统关闭事件
		void closeEvent(QCloseEvent *event);
                void photochange();

	public slots:
		//
		void slotOpenImageDlg();
		//开启发送按钮
		void enabledSendButton();
		//关于
		void about();
		//刷新
		void refurbish();
		void delSub(QString str);
	private:
		SubWindow *sub;

		QPushButton cfgAllButton;
	private slots:
		void addSub(QListWidgetItem *u);

		void addUserList(MessagePRO *msg);
		void delUserList(MessagePRO *msg);
                void chgUserphoto(MessagePRO *msg);

        signals:


};

